package udp;

//客户端

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.*;

/**
 * 1.创建服务端+端口
 * 2.准备数据 89.12(double)---->字节数组
 * 3.打包(包括发送的地点及端口)
 * 4.发送
 * 5.释放
 */
public class Client {
    public static void main(String[] args) {

        try {
            //1.创建服务端+端口
            DatagramSocket client=new DatagramSocket(6666);//参数是端口号
            //2.准备数据
            //String msg="udp编程";
            double msg=89.12;
            byte[] data=convert(msg);//将数据转换成字节数组
            //3.打包(包括发送的地点及端口)
            InetSocketAddress address=new InetSocketAddress("localhost",8888);
            DatagramPacket packet=new DatagramPacket(data,data.length,address);
            //4.发送
            client.send(packet);
            //5.释放
            client.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 数据源+Data输出流
     * @param num
     * @return
     */
    public static byte[] convert(double num){
        byte[] data=null;
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        DataOutputStream dos=new DataOutputStream(baos);
        try {
            dos.writeDouble(num);
            dos.flush();
            //获取数据
            data=baos.toByteArray();
            dos.close();
            baos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
    }
}
